]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
loginManager: Add session-removed signal and getSession method
authorJoan Torres <joan.torres@suse.com>
Wed, 7 Feb 2024 11:59:09 +0000 (12:59 +0100)
committerRay Strode <halfline@gmail.com>
Thu, 29 Feb 2024 20:42:52 +0000 (20:42 +0000)
These changes will be used by the next commit when displaying a
conflicting session dialog.

session-removed signal will be used to close the conflicting session dialog
if it's not needed anymore.

getSession method will be used when a session is opened, to check if
there's already a conflicting opened session.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3134>

js/misc/loginManager.js

index 6f95649961fbbc727093f47c24a2287f22c00f82..fe3719244ea361d5883de0c70a4f7fc21d4a1cd9 100644 (file)
@@ -101,6 +101,8 @@ class LoginManagerSystemd extends Signals.EventEmitter {
             '/org/freedesktop/login1/user/self');
         this._proxy.connectSignal('PrepareForSleep',
             this._prepareForSleep.bind(this));
+        this._proxy.connectSignal('SessionRemoved',
+            this._sessionRemoved.bind(this));
     }
 
     async getCurrentSessionProxy() {
@@ -189,6 +191,10 @@ class LoginManagerSystemd extends Signals.EventEmitter {
         }
     }
 
+    getSession(objectPath) {
+        return new SystemdLoginSession(Gio.DBus.system, 'org.freedesktop.login1', objectPath);
+    }
+
     suspend() {
         this._proxy.SuspendAsync(true);
     }
@@ -206,6 +212,10 @@ class LoginManagerSystemd extends Signals.EventEmitter {
     _prepareForSleep(proxy, sender, [aboutToSuspend]) {
         this.emit('prepare-for-sleep', aboutToSuspend);
     }
+
+    _sessionRemoved(proxy, sender, [sessionId]) {
+        this.emit('session-removed', sessionId);
+    }
 }
 
 class LoginManagerDummy extends Signals.EventEmitter  {
@@ -237,6 +247,10 @@ class LoginManagerDummy extends Signals.EventEmitter  {
         return new Promise(resolve => resolve([]));
     }
 
+    getSession(_objectPath) {
+        return null;
+    }
+
     suspend() {
         this.emit('prepare-for-sleep', true);
         this.emit('prepare-for-sleep', false);